#include "stm32f4xx_it.h"

#include "usart_interface.h"

#include "user_callback.h"

#include "usb_dcd_int.h"
#include "uart_protocol.h"


//#include "navigation.h"
void SysTick_Handler(void)
{
    User_SysTickCallback();
}

static uint8_t total_received_data[101];  // 用于保存完整的 101 字节数据
static uint32_t total_received_index = 0;  // 记录已经接收到的字节数
//#define navigation_recieve_size ((uint8_t)6+4*22+7)
int usb_task_cnt = 0;
int cnt = 0;
static uint16_t total_received = 0;
 extern USB_OTG_CORE_HANDLE USB_OTG_dev;
 #ifdef USE_USB_OTG_HS
 void OTG_HS_IRQHandler(void)
 #else
 void OTG_FS_IRQHandler(void)
 #endif
 {
    
    // USB_OTG_dev.dev.out_ep[1].xfer_buff = UA4RxDMAbuf;
    USBD_OTG_ISR_Handler(&USB_OTG_dev);  // 处理 USB 中断
    

}
        

 
/*************************************************************************
中断处理函数名称：USART1_IRQHandler
中断产生机制：DR16每隔14ms通过DBus发送一帧数据（18字节）,USART1每接收一帧数据
            进入一次中断
函数功能：遥控器传输数据接收
*************************************************************************/
void USART1_IRQHandler(void)
{
	User_UART_RX_Callback(USART1);
}

///*************************************************************************
//中断处理函数名称：USART2_IRQHandler
//中断产生机制：USART2接收到一个空字节后触发中断
//函数功能：裁判系统通讯
//*************************************************************************/
void USART2_IRQHandler(void)
{ 	
    User_UART_RX_Callback(USART2);
}

///*************************************************************************
//中断处理函数名称：USART2_IRQHandler
//中断产生机制：USART2接收到一个空字节后触发中断
//函数功能：裁判系统通讯
//*************************************************************************/
// void USART3_IRQHandler(void)
// { 	
//     User_UART_RX_Callback(USART3);
// }

void UART4_IRQHandler(void)
{
    User_UART_RX_Callback(UART4);
}

void UART5_IRQHandler(void)
{
    User_UART_RX_Callback(UART5);
}

void USART6_IRQHandler(void)
{
    User_UART_RX_Callback(USART6);
}

/*************************************************************************
中断处理函数名称：CAN1_TX_IRQHandler
中断产生机制：
函数功能：
*************************************************************************/
void CAN1_TX_IRQHandler(void)
{

}
/***********************************************************
中断处理函数名称：CAN1_RX0_IRQHandler
中断产生机制：
函数功能：
*************************************************************************/
void CAN1_RX0_IRQHandler(void)
{   
    User_CAN_RX_Callback(CAN1);
}
/*************************************************************************
中断处理函数名称：CAN2_TX_IRQHandler
中断产生机制：
函数功能：
*************************************************************************/
void CAN2_TX_IRQHandler(void)
{

}
/*************************************************************************
中断处理函数名称：CAN2_RX0_IRQHandler
中断产生机制：
函数功能：
*************************************************************************/
void CAN2_RX0_IRQHandler(void)
{
    User_CAN_RX_Callback(CAN2);
}


/*************************************************************************
中断处理函数名称：HardFault_Handler
中断产生机制：
函数功能：硬件错误中断
*************************************************************************/
void HardFault_Handler(void)
{
	while(1);
}
